home *** CD-ROM | disk | FTP | other *** search
/ Aminet 8 / Aminet 8 (1995)(GTI - Schatztruhe)[!][Oct 1995].iso / Aminet / util / misc / EasyElements.lha / EasyElements / Source / EEgui.c < prev    next >
C/C++ Source or Header  |  1995-04-04  |  6KB  |  207 lines

  1. /*
  2.  *  Source machine generated by GadToolsBox V2.0b
  3.  *  which is (c) Copyright 1991-1993 Jaba Development
  4.  *
  5.  *  GUI Designed by : Christian Kemp
  6.  */
  7.  
  8. #include <exec/types.h>
  9. #include <intuition/intuition.h>
  10. #include <intuition/classes.h>
  11. #include <intuition/classusr.h>
  12. #include <intuition/imageclass.h>
  13. #include <intuition/gadgetclass.h>
  14. #include <libraries/gadtools.h>
  15. #include <graphics/displayinfo.h>
  16. #include <graphics/gfxbase.h>
  17. #include <clib/exec_protos.h>
  18. #include <clib/intuition_protos.h>
  19. #include <clib/gadtools_protos.h>
  20. #include <clib/graphics_protos.h>
  21. #include <clib/utility_protos.h>
  22. #include <string.h>
  23. #include "EEgui.h"
  24.  
  25. struct Screen         *Scr = NULL;
  26. UBYTE                 *PubScreenName = NULL;
  27. APTR                   VisualInfo = NULL;
  28. struct Window         *EasyElementsWnd = NULL;
  29. struct Gadget         *EasyElementsGList = NULL;
  30. struct Gadget         *EasyElementsGadgets[9];
  31. UWORD                  EasyElementsLeft = 0;
  32. UWORD                  EasyElementsTop = 15;
  33. UWORD                  EasyElementsWidth = 273;
  34. UWORD                  EasyElementsHeight = 304;
  35. UBYTE                 *EasyElementsWdt = (UBYTE *)"$VER: EasyElements 1.1 (04-04-95)";
  36. struct TextAttr       *Font, Attr;
  37. UWORD                  FontX, FontY;
  38. UWORD                  OffX, OffY;
  39.  
  40. UWORD EasyElementsGTypes[] = {
  41.     STRING_KIND,
  42.     TEXT_KIND,
  43.     TEXT_KIND,
  44.     TEXT_KIND,
  45.     TEXT_KIND,
  46.     TEXT_KIND,
  47.     TEXT_KIND,
  48.     TEXT_KIND,
  49.     TEXT_KIND
  50. };
  51.  
  52. struct NewGadget EasyElementsNGad[] = {
  53.     111, 7, 151, 23, (UBYTE *)"Input", NULL, GD_Input, PLACETEXT_LEFT, NULL, NULL,
  54.     111, 40, 151, 23, (UBYTE *)"Element", NULL, GD_Element, PLACETEXT_LEFT, NULL, NULL,
  55.     111, 73, 151, 23, (UBYTE *)"Atomic Symbol", NULL, GD_Symbol, PLACETEXT_LEFT, NULL, NULL,
  56.     111, 139, 151, 23, (UBYTE *)"Atomic Weight", NULL, GD_Weight, PLACETEXT_LEFT, NULL, NULL,
  57.     111, 172, 151, 23, (UBYTE *)"Specific Gravity", NULL, GD_Gravity, PLACETEXT_LEFT, NULL, NULL,
  58.     111, 205, 151, 23, (UBYTE *)"Melting Pont C°", NULL, GD_Melting, PLACETEXT_LEFT, NULL, NULL,
  59.     111, 238, 151, 23, (UBYTE *)"Boiling Point C°", NULL, GD_Boiling, PLACETEXT_LEFT, NULL, NULL,
  60.     111, 271, 151, 23, (UBYTE *)"Discovered", NULL, GD_Discovered, PLACETEXT_LEFT, NULL, NULL,
  61.     111, 106, 151, 23, (UBYTE *)"Atomic Number", NULL, GD_Number, PLACETEXT_LEFT, NULL, NULL
  62. };
  63.  
  64. ULONG EasyElementsGTags[] = {
  65.     (GTST_MaxChars), 256, (TAG_DONE),
  66.     (GTTX_Border), TRUE, (TAG_DONE),
  67.     (GTTX_Border), TRUE, (TAG_DONE),
  68.     (GTTX_Border), TRUE, (TAG_DONE),
  69.     (GTTX_Border), TRUE, (TAG_DONE),
  70.     (GTTX_Border), TRUE, (TAG_DONE),
  71.     (GTTX_Border), TRUE, (TAG_DONE),
  72.     (GTTX_Border), TRUE, (TAG_DONE),
  73.     (GTTX_Border), TRUE, (TAG_DONE)
  74. };
  75.  
  76. static UWORD ComputeX( UWORD value )
  77. {
  78.     return(( UWORD )((( FontX * value ) + 3 ) / 6 ));
  79. }
  80.  
  81. static UWORD ComputeY( UWORD value )
  82. {
  83.     return(( UWORD )((( FontY * value ) + 5 ) / 11 ));
  84. }
  85.  
  86. static void ComputeFont( UWORD width, UWORD height )
  87. {
  88.     Font = &Attr;
  89.     Font->ta_Name = (STRPTR)Scr->RastPort.Font->tf_Message.mn_Node.ln_Name;
  90.     Font->ta_YSize = FontY = Scr->RastPort.Font->tf_YSize;
  91.     FontX = Scr->RastPort.Font->tf_XSize;
  92.  
  93.     OffX = Scr->WBorLeft;
  94.     OffY = Scr->RastPort.TxHeight + Scr->WBorTop + 1;
  95.  
  96.     if ( width && height ) {
  97.         if (( ComputeX( width ) + OffX + Scr->WBorRight ) > Scr->Width )
  98.             goto UseTopaz;
  99.         if (( ComputeY( height ) + OffY + Scr->WBorBottom ) > Scr->Height )
  100.             goto UseTopaz;
  101.     }
  102.     return;
  103.  
  104. UseTopaz:
  105.     Font->ta_Name = (STRPTR)"topaz.font";
  106.     FontX = FontY = Font->ta_YSize = 8;
  107. }
  108.  
  109. int SetupScreen( void )
  110. {
  111.     if ( ! ( Scr = LockPubScreen( PubScreenName )))
  112.         return( 1L );
  113.  
  114.     ComputeFont( 0, 0 );
  115.  
  116.     if ( ! ( VisualInfo = GetVisualInfo( Scr, TAG_DONE )))
  117.         return( 2L );
  118.  
  119.     return( 0L );
  120. }
  121.  
  122. void CloseDownScreen( void )
  123. {
  124.     if ( VisualInfo ) {
  125.         FreeVisualInfo( VisualInfo );
  126.         VisualInfo = NULL;
  127.     }
  128.  
  129.     if ( Scr        ) {
  130.         UnlockPubScreen( NULL, Scr );
  131.         Scr = NULL;
  132.     }
  133. }
  134.  
  135. int OpenEasyElementsWindow( void )
  136. {
  137.     struct NewGadget    ng;
  138.     struct Gadget    *g;
  139.     UWORD        lc, tc;
  140.     UWORD        wleft = EasyElementsLeft, wtop = EasyElementsTop, ww, wh;
  141.  
  142.     ComputeFont( EasyElementsWidth, EasyElementsHeight );
  143.  
  144.     ww = ComputeX( EasyElementsWidth );
  145.     wh = ComputeY( EasyElementsHeight );
  146.  
  147.     if (( wleft + ww + OffX + Scr->WBorRight ) > Scr->Width ) wleft = Scr->Width - ww;
  148.     if (( wtop + wh + OffY + Scr->WBorBottom ) > Scr->Height ) wtop = Scr->Height - wh;
  149.  
  150.     if ( ! ( g = CreateContext( &EasyElementsGList )))
  151.         return( 1L );
  152.  
  153.     for( lc = 0, tc = 0; lc < EasyElements_CNT; lc++ ) {
  154.  
  155.         CopyMem((char * )&EasyElementsNGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
  156.  
  157.         ng.ng_VisualInfo = VisualInfo;
  158.         ng.ng_TextAttr   = Font;
  159.         ng.ng_LeftEdge   = OffX + ComputeX( ng.ng_LeftEdge );
  160.         ng.ng_TopEdge    = OffY + ComputeY( ng.ng_TopEdge );
  161.         ng.ng_Width      = ComputeX( ng.ng_Width );
  162.         ng.ng_Height     = ComputeY( ng.ng_Height);
  163.  
  164.         EasyElementsGadgets[ lc ] = g = CreateGadgetA((ULONG)EasyElementsGTypes[ lc ], g, &ng, ( struct TagItem * )&EasyElementsGTags[ tc ] );
  165.  
  166.         while( EasyElementsGTags[ tc ] ) tc += 2;
  167.         tc++;
  168.  
  169.         if ( NOT g )
  170.             return( 2L );
  171.     }
  172.  
  173.     if ( ! ( EasyElementsWnd = OpenWindowTags( NULL,
  174.                 WA_Left,    wleft,
  175.                 WA_Top,        wtop,
  176.                 WA_Width,    ww + OffX + Scr->WBorRight,
  177.                 WA_Height,    wh + OffY + Scr->WBorBottom,
  178.                 WA_IDCMP,    STRINGIDCMP|TEXTIDCMP|IDCMP_CLOSEWINDOW|IDCMP_REFRESHWINDOW,
  179.                 WA_Flags,    WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH,
  180.                 WA_Gadgets,    EasyElementsGList,
  181.                 WA_Title,    EasyElementsWdt,
  182.                 WA_ScreenTitle,    "EasyElements 1.1 (04-04-95) Copyright Christian Kemp.  All Rights Reserved.",
  183.                 WA_PubScreen,    Scr,
  184.                 WA_AutoAdjust,    TRUE,
  185.                 WA_PubScreenFallBack,    TRUE,
  186.                 TAG_DONE )))
  187.     return( 4L );
  188.  
  189.     GT_RefreshWindow( EasyElementsWnd, NULL );
  190.  
  191.     return( 0L );
  192. }
  193.  
  194. void CloseEasyElementsWindow( void )
  195. {
  196.     if ( EasyElementsWnd        ) {
  197.         CloseWindow( EasyElementsWnd );
  198.         EasyElementsWnd = NULL;
  199.     }
  200.  
  201.     if ( EasyElementsGList      ) {
  202.         FreeGadgets( EasyElementsGList );
  203.         EasyElementsGList = NULL;
  204.     }
  205. }
  206.  
  207.